#include<stdio.h>
#include<stdlib.h>

/*c语言操作学习第1课：动态内存分配*/

int main()
{
    int *P = malloc(100 * sizeof(int));//申请100个int数值大小的空间（连续），使用*P记录首地址

    printf("%p\n",P);//打印首地址
    printf("%d\n",*P);//打印首地址第一位

    for (int i = 0; i < 15; i++)//赋值
    {
        *(P+i) = (i+1)*10;

        //P[i] = (i+1)*10;//第二种赋值方式

        //i[P] = (i+1)*10;//第三种赋值方式，不推荐
    }

    int *PP = realloc(P,20 * sizeof(int));//将15的大小扩容至20

    for (int i = 0; i < 20; i++)//遍历数组
    {
        printf("%d\n",*(P+i));
        //printf("%d\n",P[i]);
    }

    free(P);
    P = NULL;//释放空间，防止继续占用内存

    //int *P = calloc(100 * sizeof(int));       //一般不使用这个

    return 0;
}